跳到主要内容

Ubuntu 初始化 MySQL

前言

因为 MySQL 初始化后无法再修改 lower_case_table_names = 1 所以这里记录一下如何在 Ubuntu20 安装 MySQL 后初始化

配置

安装 MySQL

sudo apt-get update    
sudo apt-get install mysql-server -y

停止 MySQL 服务

sudo service mysql stop

删除 MySQL 数据目录

sudo rm -rf /var/lib/mysql

重新创建 MySQL 数据目录(仅仅删除它的内容是不够的)

sudo mkdir /var/lib/mysql    
sudo chown mysql:mysql /var/lib/mysql
sudo chmod 700 /var/lib/mysql

添加 lower_case_table_names = 1/etc/mysql/mysql.conf.d/mysqld.cnf.[mysqld]

重新初始化 MySQL:

sudo mysqld --defaults-file=/etc/mysql/my.cnf --initialize --lower_case_table_names=1 --user=mysql --console

启动 MySQL 服务:

sudo service mysql start

搜索 MySQL root 新生成的密码 root

sudo grep 'temporary password' /var/log/mysql/error.log

生成的临时密码:

用这个登陆

sudo mysql -u root -p
# 输入上面那个生成的临时密码

修改密码

ALTER USER 'root'@'localhost' IDENTIFIED BY 'root';

执行 MySQL 安全策略脚本(输错就重来吧)

sudo mysql_secure_installation
# 运行 mysql_secure_installation 会执行几个设置:
# 建立密码验证插件

# 选择密码规则
# LOW Length >= 8
# 长度大于等于8
# MEDIUM Length >= 8, numeric, mixed case, and special characters
# 长度大于等于8,数字、大小写字母、特殊符号
# STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
# 长度大于等于8,数字、大小写字母、特殊符号和字典文件(慎选!)

# 为 root 用户设置密码

# 删除匿名账号
# 取消 root 用户远程登录
# 删除测试数据表
# 刷新授权表使修改生效

最后检查:

SHOW VARIABLES LIKE 'lower_case_%';

允许远程登陆 root 用户

use mysql;
update user set host = '%' where user = 'root';
select host, user from user;

update user set plugin='mysql_native_password';
FLUSH PRIVILEGES;

exit;

重启

sudo systemctl restart mysql